package com.geek.javase.ch11.work.consumerwork;

import java.util.function.Consumer;

/*
 *@author wangpeng
 *2025/10/22 12:49
 *@description
 * 格式化打印信息  String[] array = { "张三,女", "李四,女", "王二麻,男" };
 * 如上字符串数组当中存有多条信息，请按照格式   姓名：XX。性别：XX。  的格式将信息打印出来。
 * 要求将打印姓名的动作作为第一个Consumer接口的Lambda实例，将打印性别的动作作为第二个Consumer接口的Lambda实例。
 */


public class Demo2 {

    //打印信息的方法
    //c1 处理姓名的Consumer
    //c2 处理性别的Consumer
    //arr 包含姓名和性别的字符串数组
    public static void printInfo(Consumer<String> c1, Consumer<String> c2, String[] arr) {
        // 遍历字符串数组
        for (String s : arr) {
            // 使用andThen连接两个Consumer，先执行c1再执行c2
            c1.andThen(c2).accept(s);
        }
    }

    public static void main(String[] args) {
        String[] array = { "张三,女", "李四,女", "王二麻,男" };

        //原始写法
       /* // 第一个Consumer：打印姓名部分
        Consumer<String> nameConsumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                // 分割字符串获取姓名
                String[] parts = s.split(",");
                String name = parts[0];  // 提取姓名
                // 按照格式打印姓名（不换行）
                System.out.print("姓名：" + name + "。");
            }
        };

        // 第二个Consumer：打印性别部分
        Consumer<String> genderConsumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                // 分割字符串获取性别
                String[] parts = s.split(",");
                String gender = parts[1];  // 提取性别
                // 按照格式打印性别（换行）
                System.out.println("性别：" + gender + "。");
            }
        };*/

        // 调用方法，传入两个Consumer实例
        //printInfo(nameConsumer, genderConsumer, array);
        System.out.println("------------- Lambda简化 -----------");
        printInfo(
                t1->{
                    // 分割字符串获取姓名
                    String[] parts = t1.split(",");
                    String name = parts[0];  // 提取姓名
                    // 按照格式打印姓名（不换行）
                    System.out.print("姓名：" + name + "。");
                } ,
                t2->{
                    // 分割字符串获取性别
                    String[] parts = t2.split(",");
                    String gender = parts[1];  // 提取性别
                    // 按照格式打印性别（换行）
                    System.out.println("性别：" + gender + "。");
                } ,
                array);
    }
}